1. Technical Field
The present invention is directed to a method and apparatus for managing a computer system. More specifically, the present invention is directed to a method and apparatus for dynamically repartitioning a computer system in response to partition workload.
2. Description of Related Art
Presently, many computer manufacturers design computer systems with partitioning capability. To partition a computer system is to divide the computer system's resources (i.e., memory devices, processors etc.) into groups; thus, allowing for a plurality of operating systems (OSs) to be concurrently executing on the computer system.
Partitioning a computer system may be done for a variety of reasons. Firstly, it may be done for consolidation purposes. Clearly consolidating a variety of computer systems into one by running multiple application programs that previously resided on the different computer systems on only one reduces (i) cost of ownership of the system, (ii) system management requirements and (iii) footprint size.
Secondly, partitioning may be done to provide production environment and test environment consistency. Once a new OS or application program has been tested and certified, the test partition may simply be designated as a production partition, with resources diverted to it as needed. This, in turn, may inspire more confidence that an application program that has been tested successfully will perform as expected.
Thirdly, partitioning a computer system may provide increased hardware utilization. For example, when an application program does not scale well across large numbers of processors, running multiple instances of the program on separate smaller partitions may provide better throughput.
Fourthly, partitioning a system may provide application program isolation. When application programs are running on different partitions, they are guaranteed not to interfere with each other. Thus, in the event of a failure in one partition, the other partitions will not be affected. Furthermore, none of the application programs may consume an excessive amount of hardware resources. Consequently, no application programs will be starved out of required hardware resources.
Lastly, partitioning provides increased flexibility of resource allocation. A workload that has resource requirements that vary over a period of time may be managed more easily if it is being run on a partition. That is, the partition may be easily altered to meet the varying demands of the workload.
Computer systems with partitioning capability generally use a partitioning management software. The partitioning management software is usually associated with the hardware of the system and interacts with a support processor embedded in the computer system. Thus, the partitioning management software is not part of the OS running on the computer system.
Nonetheless, it is well known that modern computer operating systems (OSs), such the Advanced Interactive Executive™ (AIX™) by the International Business Machines Corporation (IBM™), incorporate various methods of hardware resource management. AIX's primary resource management system is called a workload manager (WLM). WLM automatically assigns running processes to classes, then attempts to make system resources, such as CPU, memory and disk I/O bandwidth available according to the number of resource shares requested for the class. Alternatively, WLM can impose maximum limits on the number of resources made available to a class. Or, WLM can reserve for a class a minimum number of resources, even if the resources are not being used. Other OSs, such as Sun's Solaris, Hewlett Packard's HP-UX etc., provide similar capabilities.
Thus, hardware resource management and dynamic partitioning of a computer system are two approaches that may be used to make resources available to specific workloads when needed. A resource management software, such as WLM, may be used to respond to short-term fluctuations in resource demands, whereas a partitioning management software is used to commit resources on a longer-term basis.
Presently, the two approaches, (i.e., the resource management software and the partitioning management software) do not interact with each other in a way that combines their capabilities to enable the most efficient and flexible solution. For example, a critical application running in a partition that has one processor or CPU may consistently be approaching a maximum amount of CPU usage, even though other processors may sit idly, such as in the case where a CPU is not assigned to a partition. In this instance, WLM would not be able to provide additional CPU resources on its own, but would require the partitioning management software to assign additional CPUs to the partition. Currently, a system administrator has to repartition the computer system whenever this occurs. Having the system administrator handle this task is not as efficient as it would be if the computer system were to do so automatically.
Thus, what is needed is an apparatus and method of communicating information about peaks in resource demands from an operating system running in a partition to the partitioning management software such that the software can re-assign additional resources to the partition as needed.